<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// 1- async 函数返回的是一个新的Promise实例
	// 2- async 函数中如果有异常不会影响 后续代码的执行，返回的Promise实例状态为失败，值为异常信息。
	{
		// function fn(){
		// 	console.log("fn");
		// }
		// fn();
		
		// console.log(1);
		// const fn2 = async function(){
		// 	console.log(2)
		// }
		// fn2();
		// console.log(3);// 1 2 3           1 0
		
		
		// const p = new Promise(function(resolve){
		// 	resolve(10);
		// });
		// // 意念
		// p.then(value=>{
		// 	console.log(value);
		// })
	}
	{
		// const fn = function(){
		// 	throw "异常";
		// }
		// fn();
		// console.log(1);// 1
		
		
		// async函数中如果抛出异常不会影响 后续代码的执行。
		// const fn = async function(){
		// 	throw "异常";
		// }
		// fn();
		// console.log(1);// 1
	}
	{
		// const fn = async function(){
		// 	throw "异常";
		// }
		// const p = fn();
		// console.log(p);
	}
	{
		// async 函数返回的是一个Promise实例，如果返回的是一个非Promise,那么p的状态为成功，成功值为返回值
		// const fn = async function(){
		// 	return 1;
		// };
		// const p = fn();
		// console.log(p);// fulfilled 1
	}
	{
		// async函数返回的如果是一个Promise实例，那么得到p的状态以及值与返回的相同。
		// const fn = async function(){
		// 	return Promise.resolve(10);
		// };
		// const p = fn();
		// console.log(p);// fulfilled 10
		
		// const fn = async function(){
		// 	return Promise.reject(10);
		// };
		// const p = fn();
		// console.log(p);// rejected 10
		
		// async 返回的是一个新的Promise实例。
		const my = Promise.reject(10);
		const fn = async function(){
			return my
		};
		const p = fn();
		console.log(p === my);// false
	}
	

</script>
</html>